﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WorkWithPeople
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            buttonEdit.Hide();
            buttonDelete.Hide();
        }

        // этот метод для обновления листа, он публичный т.е. другая форма может к нему обратся.
        // т.е. со второй фомы я его вызываю чтобы заного вычитать все с листа и отобразить на форме
        public void ReloadList()
        {
            personalList.Items.Clear();
            foreach (var person in DB.Persons)
            {
                personalList.Items.Add(person);
            }
        }

        private void buttonAddPerson_MouseClick(object sender, MouseEventArgs e)
        {
            // здесь можно просто создавать форму. но в ней нельзя писать логику сохранения.
            // потомучто мы незнаем в каком случае созданная форма будет добавлять. она может добвить а может просто крестик нажатся
            var popUp = new FormEditPopUp();
            popUp.Show(this); // <- этот зис что передается, это передается вся эта форма со всеми её методами. 
            // т.е. этому попапу мы говорим вот твой владелец. у попапа это проперти Овнер (owner)
        }            

        private void personalList_Click(object sender, EventArgs e)
        {
            if (personalList.SelectedItem != null)
            {
                buttonEdit.Show();
                buttonDelete.Show();
            }         
        }

        private void buttonDelete_Click(object sender, EventArgs e)
        {
            PersonInfo selectedPerson = personalList.SelectedItem as PersonInfo;

            for (int i = 0; i < DB.Persons.Count; i++)
            {
                PersonInfo person = DB.Persons[i];
                if (person.Id.Equals(selectedPerson.Id))
                {
                    DB.Persons.Remove(person);
                }
            }

            buttonEdit.Hide();
            buttonDelete.Hide();
            ReloadList();
        }

        private void buttonEdit_Click(object sender, EventArgs e)
        {
            PersonInfo selectedPerson = personalList.SelectedItem as PersonInfo;

            if (personalList.SelectedItem != null)
            {
                for (int i = 0; i < DB.Persons.Count; i++)
                {
                    PersonInfo person = DB.Persons[i];
                    if (person.Id.Equals(selectedPerson.Id))
                    {
                        var popUp = new FormEditPopUp(person.Id, selectedPerson.Name, selectedPerson.SecondName, selectedPerson.LastName,
                            selectedPerson.Birthday, selectedPerson.PhoneNumber, selectedPerson.StreetAdress);
                        popUp.Show(this);

                        buttonEdit.Hide();
                        buttonDelete.Hide();
                        break;
                    }
                }
            }
        }
    }
}